Anyone who has ideas, feel free to send me e-mail to tgree@relay.phys.ualberta.ca. My address is also printed at the bottom of this file, in the title screen, and in the About... box of QuickTime MIDI Player.
Special thanks to all the beta testers who have helped me out. I wouldn't have been able to fix up some really nasty bugs if it weren't for your help. If YOU want to beta-test new versions of QuickTime MIDI Player, please send me an e-mail and I will be happy to put you on the list. (Registered customers get priority here, although I usually try to answer ALL of my e-mail as quickly as I can.)
・Shareware Notice
・This shareware version of QuickTime MIDI Player is fully functional and indentical to the registered version, but please send in your registration fee of $15.00 (or whatever you think is appropriate) so that I may continue to write new programs and provide updates for this one.
・Registered users of QuickTime MIDI Player can have a free registered copy of my other MIDI program, "QT MIDI Plug-in", for Netscape 2.0. Just ask and you will receive...
・If you don't send me your e-mail address with your registration, I won't be a very happy camper. And neither will you, since I don't notify people via snail-mail about new versions. So PLEASE send me your e-mail address!!!!
・What is it?
QuickTime MIDI Player is an application which will allow you to play MIDI data through your Macintosh speakers using QuickTime. It means that you don't need any special hardware such as synthesizers or sound modules to use MIDI.
・OK, but what do I need?
・ QuickTime 2.0 or greater
・ QuickTime Musical Instruments Extension is recommended
・ One of:
・ Apple MIDI Manager (Included with QuickTime MIDI Player)
・ Open Music System (Available from Opcode System's home page, "http://www.opcode.com/")
・ A sequencer program (such as "MusicShop", "Vision", or "Finale") which is compatible with the
Apple MIDI Manager or the Open Music System.
・What do I need to install?
・ Make sure that you have installed QuickTime. Put both the "QuickTime" extension and the "QuickTime Musical Instruments" extension into your "Extensions" folder. If you are using a Power Mac, also make sure you have "QuickTime PowerPlug" in your "Extensions" folder.
・ Install either (or both) the Apple MIDI Manager or Open Music System. For directions on installing the Apple MIDI Manager, see the file "MIDI Manager Installation" included with QuickTime MIDI Player. To install the Open Music System, run the OMS Installer application and do what it says to.
・How the heck do I use it?
The easiest way to quickly get going with QuickTime MIDI Player is to use one of the pre-supplied Track Setup files. If you are going to be using Band-In-A-Box, it's best to use the "Band In A Box Setup" file, otherwise use the "General MIDI Setup" file. Once you have a setup file open, you need to run your sequencer program. Once you have both QuickTime MIDI Player and your sequencer program running, you must make them communicate with one another. This is done differently depending on whether you are using the Apple MIDI Manager or OMS:
Apple MIDI Manager
In QuickTime MIDI Player, choose "Use Apple MIDI Manger" from the "MIDI" menu. Then, choose "Launch PatchBay" from the "MIDI" menu. The first time you select this, QuickTime MIDI Player will ask you to find the application "PatchBay". This file is found in the "MIDI Management Tools 2.0.2" folder in the "QTMP ト" folder. "PatchBay" will now launch automatically whenever you choose "Launch PatchBay".
Now, you need to configure "PatchBay" so that your sequencer and QuickTime MIDI Player are communicating with one another. Below is a sample "PatchBay" window:
ハ
A little education is in order here... In "PatchBay," icons on either side of the window represent programs which are Apple MIDI Manager compatible. As you can see there is an icon for QuickTime MIDI Player and an icon for MusicShop. Also, in the top left corner is an icon for the Apple MIDI Driver, which you installed with the MIDI Manger. Double-clicking on that icon lets you configure how MIDI data travels through the ports (modem/printer) on the back of the computer. So, you can use the Apple MIDI Manger not only to make different MIDI programs communicate with one another, but also with the serial ports, if you have some sort of synthesizer or sound module.
You will notice that beside some of the icons are little triangles. These triangles represent MIDI ports. A port is a means of communicating with the outside world. By connecting different ports together, you can make different applications communicate with one another. Now, if there is a triangle pointing away from a program's icon, then it is an output port, meaning it sends MIDI data somewhere. If the triangle is pointing towards a program's icon, this it is an input port, meaning that all it does is receive data. QuickTime MIDI Player has only 1 port, and it is an input port, since all QuickTime MIDI Player does is receive data from other applications and convert it directly into sound. Since it doesn't produce any MIDI data, it has no need for an output port, because it has nothing to say to anyone else!
To make applications communicate with one another, click in one of their ports and drag the line that appears over to some other port. In the picture, you can see that I am connecting one of MusicShop's output ports to QuickTime MIDI Player's input port. After they are connected, any data that is sent out that port will be received by QuickTime MIDI Player, and then converted into sound and played out the speakers.
There are a few tricks to using "PatchBay":
・ If you ever get dazed and/or confused, choose "About PatchBay" from the Apple Menu, and some screens will come up where you can read all about it.
・ To make a connection, drag between two ports. Note that only input ports can be connected to output ports, and vice-versa. It would make no sense to connect two output ports to one another, because although they would be sending data, neither one would actually listen to it because neither of them can input data. The same for two input ports - if you connected them, both of them would just listen to each other and nothing would ever happen. For this reason, "PatchBay" won't even let you connect two of the same kind of port together. You can try all you want, but you won't get anywhere.
・ To break a connection that has already been made, click anywhere in the middle of the window (but not on top of one of the connections.). The mouse will turn into a little knife. Move it across a connection if you want to break it. You can break multiple connections at once in this way.
・ You can have more than one connection on a port. For example if you were using 3 different sequencers, or one sequencer which had lots of output ports, you could still connect them all to QuickTime MIDI Player's input port at the same time.
・ Once you have finished connecting all of the ports in the configuration that you want, you CAN quit "PatchBay". "PatchBay" does not need to remain running for your connections to stay in place. In fact, most programs will automatically re-connect to any applications to which they were connected when they last quit. Of course, the order in which you quit and load programs can confuse them so you may need to re-connect them using "PatchBay." Consider the following order of events: You have made a connection between, say "MusicShop" and QuickTime MIDI Player. Quit "MusicShop". "MusicShop" will now remember that is was connected to QuickTime MIDI Player. Now quit QuickTime MIDI Player. QuickTime MIDI Player doesn't remember anything, because when it quit it wasn't connected to anything. (The connection to "MusicShop" was broken when "MusicShop" quit.) Now, load "MusicShop". "MusicShop" tries to connect to QuickTime MIDI Player, but since you just quit QuickTime MIDI Player, it obviously isn't loaded, so "MusicShop" can't connect to it. Now load QuickTime MIDI Player. Since it doesn't remember anything, because it wasn't connected to anything when it quit, it won't automatically hook up to "MusicShop." You will need to load "PatchBay" and connect them all over. However, if you loaded them in the opposite order, "MusicShop" would have automatically connected to QuickTime MIDI Player and you wouldn't have to load "PatchBay" at all.
To make a long story short, I added the "Launch PatchBay" menu so you could quickly load it and make any connections and not have to worry about the order in which you launch your applications!
Once you have done all of that, any music that you play in your sequencer will be transmitted to QuickTime MIDI Player and you will hear the notes come out of you Macintosh's speaker.
Open Music System
The Open Music System is a little easier to configure than the Apple MIDI Manager. First, in QuickTime MIDI Player, choose "Use Open Music System" from the "MIDI" menu. A new menu titled "OMS" will appear. This menu allows you to configure OMS. Here's what the menu items do:
・"Choose Nodes to Receive From..."
This is the menu item you will be most concerned with. Every application which is OMS compatible will have nodes of some sort. Some will be for sending data and some will be for receiving data. The easiest way to make sure the QuickTime MIDI Player will be able to receive from all applications is to make sure that it is receiving data from the "IAC Bus #1". When you select this menu item, a dialog will appear and you can choose which nodes to listen to. You should select "IAC Bus #1":
ハ
This means that QuickTime MIDI Player is now listening to the Inter-Application Communications Bus #1. You will only be able to select this item if you installed the IAC Driver when you installed OMS. Make sure that you did, or you will need to re-install it. Once you have selected "IAC Bus #1", every time you load QuickTime MIDI Player it will automatically choose that node, so you shouldn't ever need to configure that part of QuickTime MIDI Player again. (In fact, it may be selected automatically the first time you load QuickTime MIDI Player. If it is, don't worry, you haven't done anything wrong!)
・"Open Current OMS Studio Setup"
This menu item will open the "OMS Setup" application and allow you to configure your studio and the drivers you have installed on your Mac. If you have never run the "OMS Setup" application, you should choose this menu so that you can create a new setup for OMS.
・"OMS Midi Setup..."
This menu lets you choose which serial ports to use if you have an external synthesizer attached to your Mac. To use QuickTime MIDI Player, you don't need to configure that part of OMS, but if you have external synthesizers and other hardware, it's nice to be able to select it right from the menu. That's why it's there. (And because the OMS documentation said to put it there ;-) )
Now that you know what the menu items do, choose "Choose Nodes To Receive From..." from the "OMS" menu and select "IAC Bus#1" as outlined above. QuickTime MIDI Player is now listening for MIDI data. Go into your OMS-compatible application. Somewhere there will be some sort of menu or preference which lets you configure how you are sending MIDI data. It should bring up a dialog box similar to the one above, except it will instead say something like "Choose Nodes to Send To:". Where you will find this box and the exact wording was left up to the programmer of that application. All I can tell you is that it's there somewhere, so go find it! Once you find it, select "IAC Bus #1" as we did before. Now your application is sending data on "IAC Bus #1" and QuickTime MIDI Player is listening on the same bus. That means that any MIDI data that you send from your sequencer application will be received by QuickTime MIDI Player and converted into sound!
There you go. Now you know how to configure both the Apple MIDI Manager and the Open Music System for use with QuickTime MIDI Player!
・What else can I do with it?
Well, since you asked... QuickTime MIDI Player allows you to set up the way that the QuickTime Musical Instruments will sound on you Mac.
Before you can set up new instruments, you will first need to create a new document. Choose "New" from the "File" menu. An empty track setup document will appear. In QuickTime MIDI Player, each QuickTime instrument you create is assigned to a track. To create a new track, choose "Add Track" from the "Tracks" menu. You will see that a new track was added to the document. It will be track number 1, which listens to MIDI channel 1, is the "Acoustic Grand Piano" instrument (which has a General MIDI number of 1). It also is selected to play, and receive program changes. However, since it is not a drums instrument, the drums checkbox will not be selected. Here is what you will see:
ハ
The Track Number list tells you the number of the track. This isn't really that important, except it tells you how many tracks QuickTime has allocated, and in turn how much free memory there is. The more tracks, the more memory is taken up. There is a maximum of 64 tracks. However, QuickTime doesn't like it if you open that many tracks. Try to limit yourself. (It is unlikely that you will need more than 16 tracks. After 16 tracks, some MIDI channels will have more than one instrument playing on them.)
The MIDI channel list tells you which MIDI channel that instrument is listening to. The default is MIDI channel 1. You can have more than one instrument listening to the same MIDI channel. They will both play the same notes, but you could have one of the instruments say, a flute, and another, say, an oboe. Clicking in this list will bring up a popup menu allowing you to change the MIDI channel number for that instrument.
The Instrument list tells you the General MIDI number for the instrument, followed by the name of the instrument. If you want to change the instrument assigned to that track, click in this column. When you click in it, the QuickTime "Instrument Picker" dialog will appear, allowing you to change the instrument. Instruments which are in italics are instruments which are unavailable. They can be unavailable for one of 2 reasons:
i) You don't have the QuickTime Musical Instruments extension installed. Then, the only instrument you can use will be the "Acoustic Grand Piano" instrument.
ii) You have QuickTime Musical Instruments installed, but it's still italicized. That means that that instrument is not present in the QT Musical Instruments set either. If that is the case, you won't find that instrument anywhere else either. Only the people at Apple can add new instruments to the set so give them a call and tell them what you think.
If an instrument is unavailable, QuickTime is smart enough to use the closest matching instrument which IS available.
The Play list tells you whether a track will play when it received MIDI data. That one should be pretty obvious.
The Program Change list tells you whether or not that channel will respond to program change messages. Program Change messages are messages that are sent when a MIDI device wants you to change the instrument that is playing on that channel. This means that one channel can be one of many different instruments, although it can only be one instrument at a time. It also means that when QuickTime MIDI Player is sent such a message, all of the instruments listening to that MIDI channel will change to the one requested by whoever (or whatever!) sent the message. If you de-select this box, then that track will not change to a different instrument when a Program Change message is sent of the channel it is listening to. You can still change the instrument by clicking in the Instrument list, though.
The Drums list tells you whether you want that instrument to be a drum or not. In the General MIDI world, MIDI Channel 10 is the drum channel. However, since this is the QuickTime world and not necessarily the General MIDI world, any instrument you want can be a drums instrument. The reason for this check-box is that General MIDI program change messages don't tell you whether or not they want the new instrument to be a drum. They assume that anything on channel 10 is a drum and anything on any other channel is not. I could have forced that to be the case here, too, but I decided to give the user the choice of whether or not to do that. They may need channel 10 for something else, who knows. (Note that in the "General MIDI Setup" file, channel 10 is correctly set up for drums.) If you want to choose a different set of drum instruments, then click in the Instrument list, as above. You will notice that you can only choose drums now, not other instruments as well. As of this date, QuickTime doesn't offer a very large selection of drum instruments. That may change in the future though...?
・What's all this cool stuff under the "Preferences" menu?
Well, like just about all programs,there are a few "miscellaneous" settings that you can also customize. They are as follows:
・"Hides while in background."
This means that... drum roll... you won't be able to see the QuickTime MIDI Player window when another application is in the foreground!
・"Volume."
This is only available if you have recent versions of the Sound Manager installed, i.e. post 3.0. A menu will appear allowing you to set the volume of your computer. Useful, if you want to do something, like say, set the volume?
・"Pitch Bend Range."
OK. This one's not quite so obvious. This allows you to set how far a pitch bend can go. The default is a whole tone in either direction, which is the General MIDI Standard, however you may wish to set it to a semitone, depending on what type of synth you normally use.
・"Program Change Numbering."
This here is actually used to correct an error I had in the program a long time ago. I think I will tear this option out in the next version, unless there is a huge uproar!
Explanation: The General MIDI numbers and the program change numbers from a synth do not correspond to one another. General MIDI number range from 1 to 128, whereas program change numbers range from 0 to 127. In my ignorance of this fact, I was just sending the program change number instead of converting it to a General MIDI number for QuickTime. Program changes work correctly now, however if you have MIDI files that use the old (incorrect) setup, then you can select the "Pre - 1.3.1" (because 1.3.1 was the first version to fix this bug) option.
・"Postpone Program Changes."
You can see this menu item, but you can't do anything about it! Program changes are messy in QuickTime. (WILL SOMEONE PLEASE TELL ME IF YOU CAN CALL NASetNoteChannelInstrument FROM AN INTERRUPT ROUTINE???) QuickTime MIDI Player tries to get rid of this messiness. This menu item is no longer enabled because I don't want you calling certain routines from an interrupt when it could be dangerous and crash your computer. When I get my hands on some REAL documentation for the QuickTime Musical Instruments, then I may come back and put this one in again. For now, it uses a safe method which ensures that your computer won't crash when it gets one of those pesky program change messages.
・How on Earth do I turn off those bloody stuck notes?
What!!?! You have stuck notes. That's a pity! Sometimes QuickTime gets notes stuck on when it gets lots of pitch bend at the same time that a note is trying to be turned off. (At least, I think it's QuickTime here... it may be that there are lost MIDI packets or something else.) Also, in previous versions of QuickTime MIDI Player, sometimes notes could get stuck on when a program change message was sent (only in very weird MIDI files, though.). Not anymore. All notes are temporarily turned off before a program change, so that they won't ever get stuck on.
・Nice try, but they didn't turn off!
Then the QuickTime Note Allocator is toast. Quit QuickTime MIDI Player and load it up again. This removes any QuickTime stuff which may have been allocated and which may be toast and starts out with fresh new ones again. (You don't need to re-boot though. That sort of drastic action is usually quite unnecessary!)
・Why don't I hear anything???
Maybe you're deaf? But seriously, folks, an easy test to make sure that your computer is set up correctly for the QuickTime Musical Instruments is to open an "Instrument Picker" dialog by clicking in the Instrument list. Try playing some notes on the keyboard that appears. If nothing comes out, check to make sure the volume is turned up. (Under the Preferences menu.) Some applications (BIAB is a notable one here) like to turn off the sound. Don't know why, since BIAB doesn't even use the speakers. If nothing still comes out, it means that QuickTime is being very cranky today. Try quitting and re-loading QuickTime MIDI Player. If you still get no sound from the keyboards, try rebooting as a last resort. If you still get no sound, send me e-mail and I will try to help you.
BUT, if you do get sound from the keyboards, but not from your sequencer or whatever other program you are using, it means that you have OMS or the Apple MIDI Manger configured incorrectly. Read the steps I outlined above and you should be set straight in those regards!
・Version History:
Version 1.5
- New documentation. (You're readin' it honey...)
- Memory partition is now 460k. This is enough to allocate as many tracks as QuickTime allows. Be warned however, there is a memory leak in the QuickTime "Instrument Picker" dialog box. Every time you open it, about 5k is leaked. If you click on the "About" button it leaks something like 10k extra. So, if memory is getting low, I would advise that you save before opening the "Instrument Picker" box. E-mail the folks at Apple to get this one fixed. (I have already filed a bug report, though.)
- Fixed one of Apple's header files. Apparently (according to mail on c.s.m.p.cw) the calls MIDIVersion and SndSoundManagerVersion among others have the capability to waste certain areas of memory because the headers say they return a "long" when they really should return a "NumVersion", which had been commented out. (Trivia Fact: I noticed that SndSoundManagerVersion was affecting the program when it was called. Certain global variables which were VERY important where consistently being overwritten when it was called. The catch is this only happened when I had the global optimizer turned on in Metrowerks. I figured it was a compiler bug, but really it was an Apple bug. Thanks to whoever posted that message on c.s.m.p.cw!)
- OMS support works a LOT better on 680x0 machines. I'm amazed it even worked at all. (My callback routine, written in assembly, didn't use Pascal calling conventions correctly. I took out the assembly and now it works fine.)
- Now saves OMS preferences when you quit.
- Added a "Drums" check-box list. Program changes on drum tracks work correctly, so now you can specify an "Orchestra Kit" or a "Power Kit" if you want. Too bad QuickTime doesn't supply these...
- Made it so that the "Instrument Picker" only lets you choose drums if you selected a drum track.
- Added a "Launch PatchBay" menu item. Handy if you don't want to mess around in the Finder.
- Disabled the "Postpone Program Changes" option. It is always on now.
- Now works with every sequencer I have been able to try it with.
- Got rid of the annoying delay at startup. (Sorry, I had an extra zero on a number that I didn't check before I released it...)
Version 1.5d1 and 1.5d2
- Beta tester releases, not for general public. Fixed some stuff.
Version 1.4.1
- Better "Turn Off Stuck Notes" feature
- Works with BIAB again. ;-( <-- This was a pain to get to work!
Version 1.4
- Is now FAT.
- Now creates its own MIDI Manager port instead of using QuickTime's MIDI Manager port. This is nicer for other programs which rely on QuickTime's MIDI Manager port.
- Automatically re-connects to any MIDI Manager programs that it was connected to the last time you Quit. (Of course, it can only connect to a program which is already running!)
Version 1.3.1
- New user interface. (This happened because I ported it to C++.)
- Added lots of little options under the "Preferences" and "MIDI" menus.
- Fixed program change numbers
- Lowered memory partition to 350k. This leaves about 150k free still, so there's room if you need to lower it, however, 350k should be fine for most uses.
Version 1.3
- Compiled it for 68020 code.
- Fixed lots of little bugs. ("Save as..." saves in the right spot now... )
- "Delete Track" does what it's supposed to do (and a lot quicker too!).
- Added support for pitch bend and other controllers. If anyone has documentation which shows the format the QuickTime expects controller data to look like, please send it to me! Through trial and error I have gotten many of them right, however I can't figure them all out.
- Increased the memory partition to 400k because QuickTime doesn't deal with low memory situations very well.
Version 1.2
- Now is Open Music System compatible.
- Added "Volume" menu under the Preferences menu.
- Included a "Band In A Box Setup" Track File to get started with BIAB quickly.
- Rewrote the MIDI input function so that it should work with any format that the MIDI data is being sent in.
Version 1.1
- Now works with Band In a Box! (Yay!)
- Added "Preferences" menu so you can set it to hide while in the background.
- Added my e-mail address to the "About..." dialog.
- Included a "General MIDI Setup" 16 Track MIDI File to get started quickly.
Version 1.0
- First public release.
Shareware fees:
QuickTime MIDI Player is shareware and if you use it, please send in your registration fee of $15.00, so that you will recieve future upgrades and I will be able to continue supporting this program. I know that peaople cannot always afford the shareware fee (I'm a music student at the University of Alberta. We musicians don't exactly make a lot of money!), or you may not think that this program is worth $15.00. Please send in what you can or what you think is appropriate. Please send your registration fee to:
Terry Greeniaus
89 Lancaster Cres.
St. Albert, Alberta
Canada
T8N 2N9
Disclaimer:
QuickTime MIDI Player is distributed "as is." I make no guarantees or warranties on the quality of the product and I cannot be held liable for any problems that this software may create. I cannot be held responsible for any bad things that happen when running QuickTime MIDI Player on your computer.
QuickTime MIDI Player may be distributed freely, as long as this documentation is included with the file. It may not be sold as an individual product, but may be placed on any CD's, disks, BBS's, etc. where there is no extra charge required to aquire this file other than the normal connect charges or cost of purchasing the entire CD, etc.